package de.jmda.gen.java;

import javax.validation.constraints.NotNull;

import de.jmda.gen.CompoundGenerator;

/**
 * Generator for a static part of a type declaration. A static part can have
 * static field declarations, a static block and static method declarations.
 *
 * @author roger.jmda@gmail.com
 */
public interface StaticPartGenerator extends CompoundGenerator
{
	StaticFieldDeclarationsGenerator getStaticFieldDeclarationsGenerator();
	StaticBlockGenerator getStaticBlockGenerator();
	StaticMethodDeclarationsGenerator getStaticMethodDeclarationsGenerator();

	void setStaticFieldDeclarationsGenerator(
			StaticFieldDeclarationsGenerator staticFieldDeclarationsGenerator);
	void setStaticBlockGenerator(StaticBlockGenerator staticBlockGenerator);
	void setStaticMethodDeclarationsGenerator(
			StaticMethodDeclarationsGenerator staticMethodDeclarationsGenerator);

	@NotNull StaticFieldDeclarationsGenerator demandStaticFieldDeclarationsGenerator();
	@NotNull StaticBlockGenerator demandStaticBlockGenerator();
	@NotNull StaticMethodDeclarationsGenerator demandStaticMethodDeclarationsGenerator();
}